#include <iostream>

#include "linkList.h"
#include "seqListCpp.h"
#include "SLinkList.h"
#include "statck_queue/Stack.h"
using namespace std;
/**
 * 线性表基础测试
 */
void testSeqList() {
    SeqList list = SeqList(5);
    SeqList list2 = SeqList(5);
    // int a=1;
    // list.addElem(a);
    int b = 0;
    // //传入b的引用
    list.getElem(0,&b);
    // list.insertList(1,10);
    // cout<<b<<endl;
    //基本展示
    for(int i=1;i<5;i++) {
        list.addElem(2*i);
        list2.addElem(2*i-1);
    }
    // list.traverseList();
    // int deleteEle = 0;
    // list.deleteElem(2,&deleteEle);
    // printf("deleteNode%d \n",deleteEle);
    // list.traverseList();
    // // list2.traverseList();
    list.margeList(list2);
    list.traverseList();
}
void testLinkList() {
    LinkList link_list = LinkList();
    link_list.append(1);
    link_list.append(3);
    link_list.append(5);
    link_list.append(7);
    link_list.traval2();
    link_list.printList();
    //
    // link_list.insert(0,5);
    // link_list.insert(4,80);
    // int a;
    // link_list.get(0,&a);
    // cout<<a<<endl;
    // link_list.printList();
    // int b;
    // link_list.remove(2,&b);
    // cout<<b<<endl;
    // link_list.printList();
    // LinkList list2 = LinkList();
    // list2.append(2);
    // list2.append(4);
    // list2.append(6);
    // list2.append(8);
    // list2.append(10);
    // LinkList *list3 = new LinkList();
    // list3->margeList(&link_list,&list2,list3);
    // list3->printList();
}
void testSList() {
    SLinkList *sList = new SLinkList();
    sList->append(1);
    sList->append(10);
    sList->append(3);
    // sList->printList();
    SLinkList *sList2 = new SLinkList();
    sList2->append(2);
    sList2->append(6);
    sList2->append(10);
    // sList2->printList();
    // int removeValue;
    // sList->remove(1,&removeValue);
    // printf("removevalue:{%d}\n",removeValue);
    // sList->printList();
    // sList->remove(5,&removeValue);
    // printf("removevalue:{%d}\n",removeValue);
    // sList->printList();
    // sList->append(8);
    // sList->printList();
    SLinkList *result = new SLinkList;
    sList->uniList(sList2,result);
    result->printList();
    sList->printList();
    sList2->printList();
    // int position;
    // sList->find(3,&position);
    // printf("position %d",position);


}
void testStack() {
    Stack *stack = new Stack();
    stack->push(1);
    stack->push(2);
    stack->push(3);
    ElemType elem;
    stack->pop(&elem);
    printf("pop element %d \n",elem);
    stack->pirntStatck();
}
// int main() {
//     // testSeqList();
//     // testLinkList();
//     // testSList();
//     testStack();
// }
